#pragma GCC optimize(2)
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <map>
#include <vector>
 
using namespace std;
using LL = long long;
 
const int N = 2e5 + 7, M = 250;
const int mod = 998244353;
//前缀和优化dp

 
int n, k;
int f[N];
int res[N];
int sum[N];
 
int main(){
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
 
    cin >> n >> k;
    f[0] = 1;
    int len = 0;
    for(int i = 1; (LL)(k + i - 1 + k) * i <= n * 2; i ++){ // 700
        len = k + i - 1;

        // for(int j = n; j >= 0; j --){   // 200000
        //     int temp = 0;
        //     for(int k = 1; (LL)k * len <= j; k ++){ // 
        //         temp = ((LL)f[j - k * len] + temp) % mod;
        //     }
        //     f[j] = temp;
        //     res[j] = ((LL) res[j] + f[j]) % mod;
        // }
        // f[0] = 0;

        for(int j = 0; j <= n; j ++){
            sum[j] = f[j];
            if(j >= len) sum[j] = ((LL)sum[j] + sum[j - len]) % mod;
        }

        for(int j = n; j >= len; j --){
            f[j] = sum[j - len];
        }

        for(int j = 0; j < len; j ++) f[j] = 0;

        for(int j = len; j <= n; j ++){
            res[j] = ((LL)res[j] + f[j]) % mod;
        }



        // for(int j = 1; j <= n; j ++) cout << f[j] << " ";
        // cout << '\n';


    }

    for(int i = 1; i <= n; i ++) cout << res[i] << " ";


 
 
    return 0;
}